package com.nextel.project.util;

import com.nextel.project.usuario.bean.GeneralBean;
import com.nextel.ui.Key;
import com.nextel.ui.OListenerKey;
import com.nextel.ui.OScrollList;
import com.nextel.ui.OSoftKey;
import com.nextel.ui.OUILook;
import pe.com.nextel.main.MVCAction;
import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.List;

import javax.microedition.lcdui.Image;
import java.io.IOException;


/**
 * Menu del aplicativo
 *  
 * @version 1.0
 */
public abstract class MVCBasicLista extends MVCAction implements OListenerKey {

    private List lstObject;
    protected OScrollList listItem;
    private OSoftKey cmdSeguir, cmdAtras;
    private boolean flagForm; // para que no presione dos veces al momento de buscar
    private String strtitulo;
    private String backtitulo;
    private String siguetitulo;
    private boolean flag = true;

    private byte busquedaMVC;
    public static final byte PRODUCTO_PEDIDO = 1;
    public static final byte PRODUCTO_DEVOLUCION = 2;
    public static final byte PRODUCTO_CANJE = 3;
    public static final byte PRODUCTO_COBRANZA = 4;
    public static final byte PRODUCTO_TPAGO = 5;



    public void setBusquedaMVC(byte tipo)
    {
        busquedaMVC = tipo;
    }
 
    public abstract void sigue();

    public abstract void atras();

    public MVCBasicLista(String titulo, String botonSigue, String back) {
        this.strtitulo = titulo;
        this.backtitulo = back;
        this.siguetitulo = botonSigue;
    }

    public void setLimpiar(boolean flag) {
        this.flag = flag;
    }

    public void setDatosGenerales(String titulo, String botonSigue, String botonAtras) {
        this.siguetitulo = botonSigue;
        this.backtitulo = botonAtras;

        formulario.setTitle(titulo, OUILook.PLAIN_SMALL_TITLE);
        
    }

    protected void destroy() {

        super.destroy();

        if (this.lstObject != null && flag) {
            this.lstObject.clear();
            this.lstObject = null;
        }

    }

    protected void createView() {

        cmdSeguir = new OSoftKey(siguetitulo);
        cmdAtras = new OSoftKey(backtitulo);

        formulario.setTitle(strtitulo, OUILook.PLAIN_SMALL_TITLE);

        formulario.addSoftKey(cmdSeguir);
        formulario.addSoftKey(cmdAtras);
    
    }

    protected void createItems() {
//        System.out.println("busquedaMVC= " + busquedaMVC);
        Image img = null;
            try {
                if(busquedaMVC == PRODUCTO_DEVOLUCION){
                  img = Image.createImage("/devolucion.PNG");
                }else if(busquedaMVC == PRODUCTO_CANJE){
                  img = Image.createImage("/canjes.PNG");
                }else if(busquedaMVC == PRODUCTO_PEDIDO){
                  img = Image.createImage("/no_pedidos.PNG");
                }else if(busquedaMVC == PRODUCTO_COBRANZA){
                  img = Image.createImage("/pagos.PNG");
                }
                else{
                    img = Image.createImage("/banco.PNG");
                }

            } catch (IOException ex) {
            ex.printStackTrace();
            }

        lstObject = getListaObjetos();
        if (lstObject == null)  lstObject = new ArrayList();
   
        String[] options = new String[lstObject.size()];
 
        for (int i = 0; i < lstObject.size(); i++) {
            GeneralBean elem = (GeneralBean) lstObject.get(i);
            options[i] = elem.getDescripcion();
//            System.out.println("lista=  " + options[i]);
        }

        listItem = new OScrollList(formulario.getWidth(), formulario.getBodyHeight(),
                OUILook.PLAIN_SMALL_SOFTKEY, OUILook.PLAIN_SMALL_TEXT);
        listItem.isWithBorder = false;

        listItem.populate(options);
        listItem.listenerKey = this;
        
        Image[] images = new Image[lstObject.size( )];

        for (int i = 0; i < images.length; i++) {
             images[i] = img;
        }

        if(images.length > 0){
            listItem.setImages(images, formulario.getBodyHeight());
        }

        formulario.add(listItem);
        flagForm = true;
        
    }

    public GeneralBean getSeleccionado() {
        return (GeneralBean) lstObject.get(listItem.getSelectedIndex());
    }

    public void performAction(OSoftKey c) {
        flagForm = true;

        if (flagForm) {

            if (c == cmdAtras) {

                flagForm = true;
                 destroy();
                atras();
                

            } else if (c == cmdSeguir) {

                flagForm = false;

                if (lstObject.size() <= 0) {
                    flagForm = true;
                    return;
                }
                sigue();
                destroy();
            }
        }
    }

    public void performKey(int indx) {
        if (flagForm) {

            if (indx == Key.Key_OK) {
                return;
            }

            flagForm = true;
 
            if (lstObject.size() <= 0) {
                //System.out.println("flagForm =="+ flagForm );
                flagForm = true;
                return;
            }
            sigue();
            destroy();
        }
    }

    public abstract List getListaObjetos();
}
